home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 140
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin
/
tools
/
xpicw
/
xpicw110.lzh
/
WLSource
/
left2.s
< prev
next >
Wrap
Text File
|
1997-04-10
|
2KB
|
143 lines
* left2.s
* 左スクロールその2 / 最高速 = 5
* by Mitsuky
SPEED_MAX equ 5
.offset 8 * 引き数
_source_ptr: .ds.l 1
_dest_ptr: .ds.l 1
_speed: .ds.l 1
_vdisp: .ds.l 1
.text
.even
.dc.b 'WL10',$0d,$0a
.dc.b '左スクロールその2 / 最高速 = 5',$0d,$0a
.dc.b ' by Mitsuky',$0d,$0a
.dc.b $1a
.even
left2:
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l _speed(a6),d0 * d0.w =
bmi left2_ask_speed
cmpi.l #SPEED_MAX,d0
bhi left2_err
tst.l _vdisp(a6)
bmi left2_ask_vdisp
moveq.l #1,d1
lsl.w d0,d1
swap.w d1 * d1.l = 1回当たりのスクロール値
moveq.l #2,d3
lsl.w d0,d3
addi.w #1024*16,d3 * d3.w = (下に解説有り)
moveq.l #2,d2
lsl.l d0,d2
addi.l #1024*512,d2 * d2.l = (下に解説有り)
moveq.l #1,d5
lsl.w d0,d5
move.l #512,d7
sub.w d5,d7
swap.w d7 * d7.w = スクロールY座標
subq.w #1,d5 * d5.w = V-SYNC 当たりのループ回数-1
move.w #512,d6
lsr.w d0,d6
subq.w #1,d6 * d6.w = ループ回数-1
movea.l _source_ptr(a6),a3
movea.l _dest_ptr(a6),a4
adda.l #511*2,a3 * a3.l = 転送元アドレス
adda.l #511*2,a4 * a4.l = 転送先アドレス
loop:
bsr vdisp
moveq.l #512/16-1,d0
loop_y1:
move.w d5,d4 * d5.w =
loop_y2:
move.w (a3),(a4)
move.w 1024*1(a3),1024*1(a4)
move.w 1024*2(a3),1024*2(a4)
move.w 1024*3(a3),1024*3(a4)
move.w 1024*4(a3),1024*4(a4)
move.w 1024*5(a3),1024*5(a4)
move.w 1024*6(a3),1024*6(a4)
move.w 1024*7(a3),1024*7(a4)
move.w 1024*8(a3),1024*8(a4)
move.w 1024*9(a3),1024*9(a4)
move.w 1024*10(a3),1024*10(a4)
move.w 1024*11(a3),1024*11(a4)
move.w 1024*12(a3),1024*12(a4)
move.w 1024*13(a3),1024*13(a4)
move.w 1024*14(a3),1024*14(a4)
move.w 1024*15(a3),1024*15(a4)
subq.w #2,a3
subq.w #2,a4
dbra d4,loop_y2
adda.w d3,a3 * d3.w = 1024*16+2*(1回に描画するX)
adda.w d3,a4
dbra d0,loop_y1
sub.l d1,d7
suba.l d2,a3 * d2.l = 1024*512+2*(1回に描画するX)
suba.l d2,a4
dbra d6,loop
left2_rts:
moveq.l #0,d0
left2_rts_2:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
**** ****
vdisp:
movem.l a0,-(sp)
move.l _vdisp(a6),a0
jsr (a0)
movem.l (sp)+,a0
rts
**** ****
left2_err:
moveq.l #-1,d0
bra left2_rts_2
**** ****
left2_ask_speed:
moveq.l #SPEED_MAX,d0
bra left2_rts_2
**** ****
left2_ask_vdisp:
move.l _speed(a6),d0
lea.l ask_vdisp_table(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
bra left2_rts_2
ask_vdisp_table:
.dc.w 512,256,128,64,32,16